import Vue from 'vue'
import Vuex from 'vuex'
import createLogger from 'vuex/dist/logger'

Vue.use(Vuex)
//store实例

const CART_KEY = 'cart';

const store = new Vuex.Store({
	state: {
		// 小程序启动时storage=>vuex
		cart: uni.getStorageSync(CART_KEY) || []
	},
	mutations: {
		// 更新cart
		updateCart(state,cart){
			//如何把goodsList更新到storage
			// goodsList包含了需要更新到storage里面所有的属性.无须取storage
			
			state.cart = cart
		},
		arrangeCart(state){
			//去掉勾选的商品
			state.cart = cart.filter(item => {
				return !item.checked;
			});
		},
		// 加入购物车
		add2Cart(state,goodsId) {
			// 数组的方式把当前商品加入购物车
					
			let cartArr =state.cart
			
			// 判断是否是首次添加
			let targetIndex = cartArr.findIndex(item => {
				return item.goodsId === goodsId;
			});
			let targetGoods = cartArr[targetIndex]
			
			if (targetGoods) {
				//非首次，num+1,checked:true
				targetGoods.num = targetGoods.num + 1;
				targetGoods.checked = true;
				// 删除并插入到头部
				cartArr.splice(targetIndex,1)
				// 头部插入
				cartArr.unshift(targetGoods);
			} else {
				//首次,num:1,checked:true,构造一个对象，插入到头部
				let newGoods = {
					// goodsId:goodsId
					goodsId,
					checked: true,
					num: 1
				};
				// 头部插入
				cartArr.unshift(newGoods);
			}
		}
	},
	plugins: [createLogger()]
})


export default store